
// nodejs 提供了 http 模块，自身就可以用来构建服务器

// var https = require("https");
let http = require("http");
// console.log(http);

let server = http.createServer(); // 创建服务

// 当浏览器发送请求时 => 服务器接收请求 处理 返回响应内容 (站点->前端页面 后端接口-> 业务处理)
server.on("request",function(req,res){// 每次浏览器向服务器发送请求时都会触发
    // 形参
    // req => 用于存放请求相关的信息 => 请求方式 请求地址 携带数据(get/post) 请求头
    // res => 用于存放和设置响应相关的信息 => 设置状态码 响应正文
    if(req.url != "/favicon.ico") {
        console.log("接收到浏览器发送的请求");

        // 请求相关的信息
        // console.log(req.method);
        // console.log(req.url);
        // console.log(req.headers);
        
        // 响应相关的信息
        // res.statusCode = 200;
        // res.end("hello world");  

        // res.write()  在响应结束之前输出的内容 => 最终会拼接形成一个整体

        // res.setHeader() 设置响应头

        // 数据的类型和编码格式
        // res.setHeader("Content-Type","text/plain;charset=utf-8");  //纯文本
        // res.setHeader("Content-Type","text/html;charset=utf-8");  // html
        // res.setHeader("Content-Type","text/json;charset=utf-8");  // json
        // res.setHeader("Content-Type","text/css;charset=utf-8");  // css
        // res.setHeader("Content-Type","text/javascript;charset=utf-8");  // javascript
        // res.setHeader("Content-Type","image/png");  // png
        // res.setHeader("Content-Type","image/jpg");  // jpg
        // res.setHeader("Content-Type","image/gif");  // gif
        // res.setHeader("Content-Type","image/webp");  // webp

        
        // res.setHeader("a","1");  // 自己定义
        // res.setHeader("b","2");  // 自己定义

        // 纯文本
        // res.setHeader("Content-Type","text/plain;charset=utf-8");  //纯文本
        // res.write("hello world");    
        // res.write("你好");

        // 返回html
        // res.setHeader("Content-Type","text/html;charset=utf-8");  // html
        // res.write("<h2>hello world --- 你好</h2>");

        // 返回json (纯json)
        res.setHeader("Content-Type","text/json;charset=utf-8");  // json
        var data= {name:"张三",age:18};
        res.write(JSON.stringify(data));



        res.statusCode = 200;
        res.end();   // res.end() 只能用一次,响应结束 => 后续代码可以执行,不会再改变响应的内容
    }else{
        res.end();
    }

})

// 启动的服务器监听3000端口(闲置端口)  
server.listen(3000,function(){ // 服务器启动时执行的回调函数
    console.log("服务器启动http://127.0.0.1:3000");
})








